package com.linzm.leetcode.primary.exercises3_20230122;

import java.util.Arrays;

/**
 * @Author zimingl
 * @Date 2023/1/23 20:37
 * @Description: 三角形的最大周长
 */
public class Demo8_976 {
    /**
     * 给定由一些正数（代表长度）组成的数组 nums ，返回
     * 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形，返回 0。
     */
    public static void main(String[] args) {
        Demo8_976 demo8_976 = new Demo8_976();
//        int[] nums = {1, 2, 1, 10};
        int[] nums = {2,1,2};
        int perimeter = demo8_976.largestPerimeter(nums);
        System.out.println(perimeter);
    }

    private int largestPerimeter(int[] nums) {
        int sum = Integer.MIN_VALUE, tmp = 0;
        Arrays.sort(nums);
        for (int i = 1; i < nums.length - 1; i++) {
            if (nums[i - 1] + nums[i] > nums[i + 1]) {
                tmp = nums[i - 1] + nums[i] + nums[i + 1];
                sum = Math.max(sum, tmp);
            }
        }
        return sum == Integer.MIN_VALUE ? 0 : sum;
    }

    private int largestPerimeter2(int[] nums) {
        Arrays.sort(nums);
        for (int i = nums.length - 1; i >= 2; i--) {
            if (nums[i] < nums[i - 1] + nums[i - 2]) {
                return nums[i] + nums[i - 1] + nums[i - 2];
            }
        }
        return 0;
    }
}
